<?php 


class My_View_Helper_showPhotos extends Zend_View_Helper_Abstract
{

    public function showPhotos($tabla, $key, $id,$showbasename=true,$array=false,$extra=true)
    {
        
        $files= Sgit_Util_getFiles::run($tabla, $key, $id,true);

        foreach((array)$files as $file)
        {
            if($file) {
                
                if(!in_array((strtolower($file['extension'])),array('jpg','jpeg','gif','png','pdf')))
                {
                      if($file['basename']!='Thumbs.db')
                         $archivos[]=$this->view->showFile($file,$showbasename,$array,$extra);
                   
                }else {
                     $file_imagen_th=$file['dirname'].DS.'th'.DS.utf8_decode($file['basename']);
                     
                     if(strtolower($file['extension'])=='pdf')
                     {
                          $file_imagen_th=str_replace('.pdf','.jpg',$file_imagen_th);
                     }
                    
                  
                   
                    
                    if(!file_exists($file_imagen_th)){
                        if(!file_exists($file['dirname'].DS.'th')) mkdir($file['dirname'].DS.'th');
                        
                        if(strtolower($file['extension'])=='pdf'){
                            $exec="\"C:\Archivos de programa\gs\gs9.05\bin\gswin32c.exe\" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r15 -sOutputFile=\"".$file_imagen_th."\" \"".$file['pathname']."\"";
                            //exec($exec);
                        }else{
                          
                            crear_Thumbnail($file['pathname'], 160, 160, 80, $file_imagen_th);
                        }
                        
                    }
                    
                    $public= pathinfo($file['public_path']);
                    $file_imagen_th_public=$public['dirname'].'/th/'.$public['basename'];
                    
                    if(strtolower($file['extension'])=='pdf')
                    {
                        $file_imagen_th_public=str_replace('.pdf','.jpg',$file_imagen_th_public);
                        $img=$this->view->img($file_imagen_th_public, $file['basename']);
                        $archivosPhotos[]= $this->view->anchor($file['public_path'],'<br>'. $img.'<br>'.$file['basename']);
              
                    }else{
                        $img=$this->view->img($file_imagen_th_public, $file['basename']);
                        $archivosPhotos[]= $this->view->anchor($file['public_path'], $img, array('class'=>'lightbox', 'rel'=>"album$id"));
                
                    }
                    
           
                    
                }
            }
        }

        $file='';
        if($archivos || $archivosPhotos)
        {
            $file='<fieldset><legend>'.$this->view->translate('Documentos Adjuntos').'</legend>';
            if($archivosPhotos){
                 $file.=implode('',$archivosPhotos);
                 $file.='<br><br>';
            }       

            if($archivos)  $file.=implode('<br>',$archivos);
            
            $file.='</fieldset>';
        }
        return $file;
    }

}


/*
        if(!file_exists('documentos/gestion_proyectos/th_'.$file)){
            crear_Thumbnail('documentos/gestion_proyectos/'.$file, 160, 160, 80, 'documentos/gestion_proyectos/th_'.$file);
        }
        
        if(in_array(strtolower($partes_ruta['extension']),array('jpg','jpeg','gif','png'))){
            return '<a href="documentos/gestion_proyectos/'.$file.'" class="lightbox"  rel="album'.$id_tarea.'"><img src="documentos/gestion_proyectos/th_'.$file.'"></a> ';
        }
        */
        
 

/*
#############################################################
##
##    funtion crear_Thumbnail() por Nicolás de Arregui (nicolas@e-start.com.ar)
##
##    La función crear_Thumbnail() crea una copia de una imagen a un tamaño menor definido por los parametros
##    $ancho_max y $alto_max que definen el ancho y alto máximos de la imagen resultante. El formato de esta
##    imagen es JPG y se puede elegir entre: 1) Guardar la imagen en el servidor, o 2) mostrar la imagen en
##    el navegador.
##    Además, existe la posibilidad de agregar una imagen en alguna esquina de la imagen. Esto es muy util si
##    se quiere por ejemplo, agregar una lupa indicando que se puede ver la imagen en tamaño real, o para
##    pisar nuestras imagenes con nuestra propia marca o logo. El argumento $posicion_marca indica la
##    posición que tendrá la marca, separada $margen pixel de los bordes. Los valores de $posicion_marca
##    pueden ser:
##    0 = Esquina Superior Izquierda
##    1 = Esquina Superior Derecha
##    2 = Esquina Inferior Izquierda
##    3 = Esquina Inferior Derecha
##    
#############################################################
*/
 
function abrir_Imagen($imagen) {
    if (@$info_imagen = getimagesize($imagen)) {
        switch ($info_imagen['mime']) {
        case "image/jpeg":
            if (!@$imagen_fuente = imagecreatefromjpeg($imagen)) {
                return 0;
            }
            break;
        case "image/gif":
            if (!@$imagen_fuente = imagecreatefromgif($imagen)) {
                return 0;
            }
            break;
        case "image/png":
            if (!@$imagen_fuente = imagecreatefrompng($imagen)) {
                return 0;
            }
            break;
        }
    } else {
        return 0;
    }
    return $imagen_fuente;
}
 
function crear_Thumbnail($imagen, $ancho_max = 200, $alto_max = 200, $calidad = 80, $destino = "", $marca = "", $posicion_marca = 0, $margen = 4) {
 
    if ($destino == "") {
        header('Content-type: image/jpeg');
    }
 
    //    OBTENGO LOS DATOS ORIGINALES DE LA IMAGEN Y CHEQUEO QUE SEA UNA IMAGEN VALIDA
    if (@$datos_img = getimagesize($imagen)) {
        $ancho = $datos_img[0];
        $alto = $datos_img[1];
        
        
        $ancho_orig = $ancho;
        $alto_orig = $alto;
        
        //    CALCULO ANCHO Y ALTO PROPORCIONALES
        if ($ancho > $ancho_max) {
            $proporcion = round(($ancho_max * 100) / $ancho);
            $ancho = $ancho_max;
            $alto = round(($alto * $proporcion) / 100);
        }
        if ($alto > $alto_max) {
            $proporcion = round(($alto_max * 100) / $alto);
            $alto = $alto_max;
            $ancho = round(($ancho * $proporcion) / 100);
        }
        
        //    CREO LA NUEVA IMAGEN
        $imagen_nueva = imagecreatetruecolor($ancho, $alto);
        
        //    ABRO LA IMAGEN FUENTE
        if (!$imagen_fuente = abrir_Imagen($imagen)) {
            return 0;
            exit;
        }
        
        //    COPIO LA IMAGEN FUENTE EN LA NUEVA
        imagecopyresampled($imagen_nueva, $imagen_fuente, 0, 0, 0, 0, $ancho, $alto, $ancho_orig, $alto_orig);
        
        //    CHEQUEO SI HAY QUE AGREGAR UNA MARCA
        if (($marca != "") && ($imagen_marca = abrir_Imagen($marca))) {
            list($ancho_marca, $alto_marca) = getimagesize($marca);
            $pos_x = $margen;
            $pos_y = $margen;
            switch ($posicion_marca) {
            case 1:
                $pos_x = ($ancho - $ancho_marca) - $margen;
                break;
            case 2:
                $pos_y = ($alto - $alto_marca) - $margen;
                break;
            case 3:
                $pos_x = ($ancho - $ancho_marca) - $margen;
                $pos_y = ($alto - $alto_marca) - $margen;
                break;
            }
            imagecopy($imagen_nueva, $imagen_marca, $pos_x, $pos_y, 0, 0, $ancho_marca, $alto_marca);
        }
        
        imagejpeg($imagen_nueva, $destino, $calidad);
        
        return 1;
    } else {
        //    HA OCURRIDO UN ERROR AL OBTENER LOS DATOS DE LA IMAGEN.
        //    PUEDE SER QUE EL ARCHIVO NO EXISTA, O QUE NO SEA UNA
        //    IMAGEN VALIDA.
        return 0;
    }
}
        